<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class u_pedido extends CI_Controller {
    private $sessao;

    function __construct(){
        parent::__construct();
        $this->load->model("ProdutoModel");
        $this->load->model("CategoriaModel");
        $this->load->model("PedidoModel");
        $this->load->model("ClienteModel");
        $this->load->model("Log");
        $this->load->model("Selects");

        //Verifica se está logado
        $this->load->helper("auth");
        $this->load->helper("mail");
        $this->sessao = u_logado();
    }

    public function index($mensagem = ""){
        $this->load->helper("form");
  
        $pedidos = $this->Selects->getPedidoProdutoFornecedorUsuarioByUsuario($this->sessao->idUsuario, $this->input->post("status_filtro"),
            timestamp_time($this->input->post("datamin")),timestamp_time($this->input->post("datamax")));
        
        if( $pedidos != false) :
            $lista = "";
            $itemAntigo = "";
            $total = 0;
            $linha = 0;
            $idProdutos = "";
            $statusTotal = "";

            foreach($pedidos->result() as $campo => $item) {
                if($item->idPedido != $itemAntigo){
                    if($campo != 0){
                        if ($linha == 0)
                            $lista .= "<tr class=\"impar\">\n\t\t";
                        else
                            $lista .= "<tr>\n\t\t";
                        $lista.="
                            <td>Total</td> <td></td> <td></td><td></td> <td>".preco_imprime($total)."</td>\n\t
                            </tr>\n\t\t
                            </table>";

                        $total = 0;
                        $linha = 0;
                    }
                    $lista .= "<table class='tabelacompras' cellpadding=\"0\" cellspacing=\"0\">";
                    $lista .= "<div class=\"compras_frase\">";
                    $lista .= "Pedido Realizado às ".arruma_time($item->dataCadastro);
                    $lista .= "</div>";
                    $lista .= "<tr>
                        <th width=\"200\">Nome</th>
                        <th width=\"50\">Quantidade</th>
                        <th width=\"100\">Status</th>
                        <th width=\"100\">Preço Unitario</th>
                        <th width=\"100\">Preço Total</th>
                    </tr>";
                }

                if ($linha == 0)
                    $lista .= "<tr class=\"impar\">\n\t\t";
                else
                    $lista .= "<tr>\n\t\t";
                $lista .= "<td>".anchor("all/a_produto/index/".$item->idProduto,$item->pnome)."</td>\n\t";
                $lista .= "<td>$item->quantidade</td>\n\t";
                $lista .= "<td>$item->status</td>\n\t";
                $lista .= "<td>".preco_imprime($item->preco)."</td>\n\t";
                $lista .= "<td>".preco_imprime($item->preco*$item->quantidade)."</td>\n\t";
                $lista .="</tr>\n\t\t";

                $total = $total + $item->preco*$item->quantidade;

                if ($linha == 0 ) $linha = 1;
                else $linha = 0;

                $idProdutos .= $item->idProduto.".";

                $itemAntigo = $item->idPedido;
            }
            $lista .= "<tr><td>Total</td> <td> <td> <td> <td>".preco_imprime($total)."</td>\n\t";
            $lista .= "</tr>";
            $lista .= "</table>";
            $vazio = false;

        else :
            $lista = "<tr>\n\t";
            $lista .= "<td colspan=\"3\">Você não tem pedidos.</td>\n";
            $lista .= "</tr>\n";
            $lista .= "</table>\n";
            $vazio = true;

        endif;

        if($mensagem == "sucesso") $mensagem = "\nOperação realizada com Sucesso!\n";
        else $mensagem = "";

        $titulo = "Pedidos";
        if($this->input->post("status_filtro") == "andamento")
                $titulo .= " Em Andamento";
        elseif($this->input->post("status_filtro") == "enviado")
                $titulo .= " Enviados";
        elseif($this->input->post("status_filtro") == "finalizado")
                $titulo .= " Finalizados";
        elseif($this->input->post("status_filtro") == "cancelado")
                $titulo .= " Cancelados";
        if($this->input->post("datamax")){
            if($this->input->post("datamin"))
                $titulo .= " de ".$this->input->post("datamin");
            $titulo .= " até ".$this->input->post("datamax");
        }
        elseif($this->input->post("datamin"))
                $titulo .= " de ".$this->input->post("datamin")." até Hoje";

        $dados = array(
            "titulo" => $titulo,
            "lista" => $lista,
            "mensagem" => $mensagem,
            "vazio" => $vazio
            );

        $main = array(
            "dados" => $dados,
            "link" => "usuario/u_listar_pedido_view",
            );
        $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "listou", "pedido");
        $this->load->view("template",$main);
    }
    
      public function carrinho($mensagem = ""){
        $this->load->helper("form");
        $this->load->library("form_validation");

        //mostra carrinho atual
        $carrinho = $this->session->userdata("carrinho");
        //print_r($carrinho);
        if( $carrinho != "" && $carrinho != null) :
            $lista = "";
            $total = 0;
            $this->load->helper("html");
            $favoritos = array('src'=>"images/tabelas/favorito.png", 'height' => '26px', 'style' => 'border:0px;');
            $remover = array('src'=>"images/tabelas/delete.png", 'height' => '26px', 'style' => 'border:0px;');
            foreach($carrinho as $campo => $item) :
                if($item != "" && $item != null ){
                    $produto = $this->ProdutoModel->getProduto($item['idProduto']);
                    if ($linha == 0)
                        $lista .= "<tr class=\"impar\">\n\t\t";
                    else
                        $lista .= "<tr>\n\t\t";
                        //$lista .= "<td>". anchor("admin/produto/editar/".$produto->idProduto, $produto->nome)."</td>\n\t";
                    $lista .= "<td>".anchor("all/a_produto/index/$produto->idProduto", $produto->nome)."</td>\n\t";
                    $lista .= "<td><input type=\"text\" style=\"text-align:center;\" size=\"3\" name=\"quantidade_".$item['idItem']."\" value=\"".$item['quantidade']."\" /></td>\n\t";
                    $lista .= "<td><center>".anchor("usuario/u_interesse/mostrarInteresse/$produto->idProduto",img($favoritos))."</center></td>\n\t";
                    $lista .= "<td><center>".anchor("usuario/u_pedido/removerCarrinho/$campo",img($remover))."</center></td>\n\t";
                    $lista .= "<td><center>".preco_imprime($produto->preco)."</center></td>\n\t";
                    $lista .= "<td><center>".preco_imprime($produto->preco*$item['quantidade'])."</center></td>\n\t";
                    $lista .= "</tr>\n";

                    if ($linha == 0 ) $linha = 1;
                    else $linha = 0;

                    $total = $total + $produto->preco*$item['quantidade'];
                }
            endforeach;

            //$lista .= "";
            $lista .= "<tr><td>Total</td> <td> </td> <td> </td> <td> </td> <td></td> <td><center>".preco_imprime($total)."</center></td>\n\t";
            $vazio = false;

        else :
            $lista = "<tr>\n\t";
            $lista .= "<td colspan=\"3\">Seu carrinho está vazio</td><td><td><td>\n";
            $lista .= "</tr>\n";
            $vazio = true;

        endif;

        if($mensagem == "compra_sucesso") $mensagem = "\nCompra realizada com Sucesso!<br> Consulte seu email e aguarde o
            os fornecedores entrarem em contato. <br>O Compras da Construção agradacem pela sua escolha.\n";
        if($mensagem == "sucesso") $mensagem = "Operação realizada com Sucesso!<br>";
        elseif($mensagem == "erro") $mensagem = "<div style='color:red;'>Você só pode digitar números!</div>";
        elseif($mensagem == "erro_quantidade") $mensagem = "<div style='color:red;'>Você selecionou um número maior do que a quantidade disponível</div>";
        else $mensagem = "";
        $dados = array(
            "titulo" => "Seu Carrinho",
            "user" => $this->sessao->nome,
            "lista" => $lista,
            "mensagem" => $mensagem,
            "vazio" => $vazio
            );

        $main = array(
            "dados" => $dados,
            "link" => "usuario/u_carrinho_view",
            );
        $this->load->view("template",$main);
    }

    public function adicionarCarrinho(){
        if( $this->input->get("quantidade") != "" && $this->input->get("idProduto") != ""){
            if(is_numeric($this->input->get("quantidade"))){
                $produto = $this->ProdutoModel->getProduto($this->input->get("idProduto"));
                if($produto == false) show_error ("Este produto n&atilde;o existe");

                if($this->session->userdata("carrinho") != ""){
                    $carrinho = $this->session->userdata("carrinho");
                    //Se já há um item igual no carrinho
                    foreach ($carrinho as $campo => $item){
                        if($item['idProduto'] == $this->input->get("idProduto")){
                            $item['quantidade'] += $this->input->get("quantidade");
                            if($produto->quantidade < $item['quantidade'])
                                redirect("all/a_produto/index/".$this->input->get("idProduto")."/erro_quantidade");
                            $carrinho[$campo] = $item;
                            $this->session->set_userdata("carrinho", $carrinho);
                            redirect("usuario/u_pedido/carrinho");
                        }
                    }
                }
                else
                    $carrinho = array();

                $dados = array (
                    "idProduto" => $this->input->get("idProduto"),
                    "idFornecedor" => $this->input->get("idFornecedor"),
                    "quantidade" => $this->input->get("quantidade"),
                    "idItem" => time()
                );

                array_push($carrinho, $dados);
                $this->session->set_userdata("carrinho", $carrinho);
                $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "adicionou carrinho", "produto", $this->input->get("idProduto"));

                redirect("usuario/u_pedido/carrinho");
            }
            else
                redirect("all/a_produto/index/".$this->input->get("idProduto")."/erro");
        }
        else
            show_error ("Voce não pode fazer isso");

        
        $dados = array(
            "titulo" => "Seu Carrinho",
            "user" => $this->sessao->nome,
            );

        $main = array(
            "dados" => $dados,
            "link" => "usuario/listar_produto_view",
            );
        
        //echo "legal";
        //print_r($this->input->get());
    }
    
    public function finalizarPedido(){

        $this->load->helper("form");
        $this->load->library("form_validation");

        $carrinho = $this->session->userdata("carrinho");
        
        //atualiza o carrinho
        if($this->input->post("bt_enviar_x")){
            foreach ($carrinho as $campo => $item){

                if(!(is_numeric($this->input->post("quantidade_".$item['idItem']))))
                    redirect("usuario/u_pedido/carrinho/erro");

                $string = "quantidade_".$item['idItem'];

                if($item['quantidade'] != $this->input->post($string)){

                    $produto = $this->ProdutoModel->getProduto($item['idProduto']);
                    if($produto == false) show_error ("Este produto n&atilde;o existe");
                    if($produto->quantidade < $this->input->post($string))
                        redirect("usuario/u_pedido/carrinho/erro_quantidade");

                    $item['quantidade'] = $this->input->post($string);
                    $carrinho[$campo] = $item;
                }
            }
            $this->session->set_userdata("carrinho", $carrinho);
        }

        if (tipo_usuario() == "usuario")
            $cliente = $this->ClienteModel->getCliente($this->sessao->idCliente);
        else
            $cliente = $this->sessao;

        if( $carrinho != "" && $carrinho != null) :
            $lista = "";
            $total = 0;
            foreach($carrinho as $campo => $item) :
                if($item != "" && $item != null ){
                    $produto = $this->ProdutoModel->getProduto($item['idProduto']);
                    if ($linha == 0)
                        $lista .= "<tr class=\"impar\">\n\t\t";
                    else
                        $lista .= "<tr>\n\t\t";
                        //$lista .= "<td>". anchor("admin/produto/editar/".$produto->idProduto, $produto->nome)."</td>\n\t";
                    $lista .= "<td align=\"center\">".anchor("all/a_produto/index/$produto->idProduto", $produto->nome)."</td>\n\t";
                    $lista .= "<td align=\"center\">".$item['quantidade']."</td>\n\t";
                    $lista .= "<td><center>".preco_imprime($produto->preco)."</center></td>\n\t";
                    $lista .= "<td><center>".preco_imprime($produto->preco*$item['quantidade'])."</center></td>\n\t";
                    $lista .= "</tr>\n";

                    if ($linha == 0 ) $linha = 1;
                    else $linha = 0;

                    $total = $total + $produto->preco*$item['quantidade'];
                }
            endforeach;

            //$lista .= "";
            $lista .= "<tr><td align=\"center\">Total</td> <td> </td>  <td></td> <td><center>".preco_imprime($total)."</center></td>\n\t";
            $vazio = false;

        else :
            show_error("Seu carrinho está vazio!");

        endif;

        $dados = array(
            "titulo" => "Finalizar Pedido",
            "cliente" => $cliente,
            "lista" =>$lista
            );

        $main = array(
            "dados" => $dados,
            "link" => "usuario/u_finalizar_pedido_view",
            );

        $this->load->view("template",$main);
    }

    public function cadastrar(){
        $this->load->helper("form");
        $this->load->library("form_validation");

        $cliente = $this->ClienteModel->getCliente($this->sessao->idCliente);

        $dados = array(
            "titulo" => "Finalizar Pedido",
            "user" => $this->sessao->nome,
            "cliente" => $cliente
            );

        $main = array(
            "dados" => $dados,
            "link" => "usuario/u_finalizar_pedido_view",
            );

        $this->form_validation->set_rules('endereco', 'Endereco', 'required');
        $this->form_validation->set_rules('cep', 'CEP', 'required');
        $this->form_validation->set_rules('numero', 'Número', 'required|numeric');

        if ($this->form_validation->run() == false)
            $this->load->view("template", $main);

        else{
            $carrinho = $this->session->userdata("carrinho");
            if ($carrinho == null || $carrinho == "") show_error ("Erro inesperado no carrinho. Tente concluir a compra novamente");
            
            $pedido = array(
                "endereco" => $this->input->post("endereco"),
                "numero" => $this->input->post("numero"),
                "complemento" => $this->input->post("complemento"),
                "cep" => $this->input->post("cep"),
                "idUsuario" => $this->sessao->idUsuario
            );

            $idPedido = $this->PedidoModel->inserir($pedido);
            $pedido['idPedido'] = $idPedido;
            $this->Log->inserir(tipo_usuario(), id_tipo_usuario(), "cadastrou", "pedido", $idPedido);

            $fornecedorAntigo = "";
            $array_produtosFornecedor = array();
            $array_quantidadesFornecedor = array();

            $matriz_produtosFornecedor = array();
            $matriz_quantidadesFornecedor = array();

            $array_produtos = array();
            $array_quantidades = array();

            $n_carrinho = count($carrinho);
            for($i=0 ; $i<$n_carrinho ; $i++){
                $item = $carrinho[$i];
                $dados2 = array(
                    'idProduto' => $item['idProduto'],
                    'idPedido' => $idPedido,
                    'quantidade' => $item['quantidade'],
                    'dataCadastro' => timestamp()
                );
                $this->PedidoModel->inserirPedidoProduto($dados2);
                //atualiza a quantidade
                $produtoFornecedor = $this->Selects->getProdutoFornecedor($item['idProduto']);
                $dados_produto['quantidade'] = $produtoFornecedor->quantidade - $item['quantidade'];
                $this->ProdutoModel->update($item['idProduto'], $dados_produto);


                //********* MONTANDO O EMAIL PARA CADA FORNECEDOR**************
                array_push($array_produtosFornecedor, $produtoFornecedor);
                array_push($array_quantidadesFornecedor, $item['quantidade']);
                if($i+1 < $n_carrinho){
                    if($carrinho[$i]['idFornecedor'] != $carrinho[$i+1]['idFornecedor']){
                       array_push($matriz_produtosFornecedor, $array_produtosFornecedor);
                       array_push($matriz_quantidadesFornecedor, $array_quantidadesFornecedor);
                       $array_produtosFornecedor = array();
                       $array_quantidadesFornecedor = array();
                    }
                }
                else{
                       array_push($matriz_produtosFornecedor, $array_produtosFornecedor);
                       array_push($matriz_quantidadesFornecedor, $array_quantidadesFornecedor);
                       $array_produtosFornecedor = array();
                       $array_quantidadesFornecedor = array();

                }
                //print_r($item);
               // print_r($produtoFornecedor);
                //print_r($array_produtosFornecedor);
                //print_r($array_quantidadesFornecedor);
                //**** MONTANDO PARA O ADMIN *****
                array_push($array_produtos, $produtoFornecedor);
                array_push($array_quantidades, $item['quantidade']);

            }
            //print_r($matriz_produtosFornecedor);
            $n_fornecedores = count($matriz_produtosFornecedor);
            if (tipo_usuario() == "usuario"){
                $cliente = $this->ClienteModel->getCliente($this->sessao->idCliente);
                for($i=0 ; $i < $n_fornecedores ; $i++){
                    emailInformaCompraFornecedor($matriz_produtosFornecedor[$i], $matriz_quantidadesFornecedor[$i], $cliente, $pedido);
                }
                //emailInformaCompraClienteUsuario($array_produtos, $array_quantidades, $cliente, $this->sessao, $pedido);
                //emailInformaCompraUsuario($array_produtos, $array_quantidades, $cliente, $this->sessao, $pedido);
                emailInformaCompraAdmin($array_produtos, $array_quantidades, $cliente, $this->sessao, $pedido);
                emailInformaCompraUsuario($matriz_produtosFornecedor, $matriz_quantidadesFornecedor, $cliente, $this->sessao, $pedido);
                emailInformaCompraClienteUsuario($matriz_produtosFornecedor, $matriz_quantidadesFornecedor, $cliente, $this->sessao, $pedido);
            }
            else{
                emailInformaCompraCliente($matriz_produtosFornecedor, $matriz_quantidadesFornecedor, $cliente, $pedido);
                emailInformaCompraAdmin($array_produtos, $array_quantidades, $cliente, "", $pedido);
                for($i=0 ; $i < $n_fornecedores ; $i++){
                    emailInformaCompraFornecedor($matriz_produtosFornecedor[$i], $matriz_quantidadesFornecedor[$i], $this->sessao, $pedido);
                }
            }
            
           $this->session->unset_userdata("carrinho");
           
           redirect("usuario/u_pedido/carrinho/sucesso");
        }
    }
    
    public function removerCarrinho($campo = ""){
        if($campo == "") show_error("Você precisa selecionar um produto!");

        $carrinho = $this->session->userdata("carrinho");
        unset($carrinho[$campo]);
        $this->session->set_userdata("carrinho",$carrinho);

        redirect("usuario/u_pedido/carrinho/sucesso");
    }

    /* delete antigo
    private function delete(){
        foreach($this->input->post() as $campo => $valor) :
            $nome = explode("_", $campo);
            //Se a primeira parte do nome do campo é produto
            if($nome[0] == "produto") :
                $carrinho = $this->session->userdata('carrinho');
                foreach ($carrinho as $campo =>$item){
                    if ($item['idItem'] == $nome[1]){
                        //echo $item['idItem'];
                        /*if(count($carrinho == 1)){
                            $this->session->unset_userdata('carrinho');
                            redirect("usuario/u_pedido/index/sucesso");
                        }
                        unset($carrinho[$campo]);
                        $this->session->set_userdata('carrinho', $carrinho);   
                    }
                }
            endif;
        endforeach;
        redirect("usuario/u_pedido/index/sucesso");
    }*/

}